/**
 * 坐标系和投影定义
 */
import {LatLngBounds} from "../geom/LatLngBounds";
import {LatLng} from "../geom/LatLng";
import {Vector2} from "three";

export abstract class CRS {
    /**
     * 可以编码的范围
     */
    abstract bbox: LatLngBounds;

    /**
     * 投影
     * @param {LatLng} latLng 经纬度
     * @returns {Vector3} 3d坐标
     */
    abstract projection(latLng: LatLng): Vector2

    /**
     * 逆向投影
     * @param {Vector3} vec 3d坐标
     * @returns {LatLng} 经纬度
     */
    abstract unProjection(vec: Vector2): LatLng
}
